package com.sunqianhu.algorithm.sort.insert.direct_insertion_sort;

public class DirectInsertionSort {
    //原理是依次选择一个元素，然后在已排序的列表中找比当前元素小的元素，
    //然后插入到该位置的后面，比当前元素大的元素往后移一位
    public static void sort(int[] arr) {
        for (int i = 1; i < arr.length; i++) {
            int key = arr[i]; //当前元素
            int j = i - 1; //前一个元素的索引
            //如果已经排序好的元素比当前元素大，则将已排序好的元素后移一位
            while (j >= 0 && arr[j] > key) {
                arr[j + 1] = arr[j];
                j--;
            }
            //此时的j就是比当前元素小的元素的索引，将当前元素插入到该位置的后面
            arr[j + 1] = key;
        }
    }

    public static void main(String[] args) {
        int[] arr = {5, 2, 4, 6, 1, 3};

        System.out.println("原始数组:");
        for (int num : arr) {
            System.out.print(num + " ");
        }

        sort(arr); // 调用排序方法

        System.out.println("\n排序后数组:");
        for (int num : arr) {
            System.out.print(num + " ");
        }
    }
}
